package com.haixiaoke.saas.repository.service;

import com.haixiaoke.saas.repository.pojo.ApartmentItemRuleRef;

import java.util.List;

/**
 * 账单规则与收费项目关系Service接口
 *
 * @author qixi
 * @date 2023-06-16
 */
public interface IApartmentItemRuleRefService {
    /**
     * 查询账单规则与收费项目关系
     *
     * @param refId 账单规则与收费项目关系主键
     * @return 账单规则与收费项目关系
     */
    ApartmentItemRuleRef selectApartmentItemRuleRefByRefId(Long refId);

    /**
     * 查询账单规则与收费项目关系列表
     *
     * @param apartmentItemRuleRef 账单规则与收费项目关系
     * @return 账单规则与收费项目关系集合
     */
    List<ApartmentItemRuleRef> selectApartmentItemRuleRefList(ApartmentItemRuleRef apartmentItemRuleRef);

    /**
     * 新增账单规则与收费项目关系
     *
     * @param apartmentItemRuleRef 账单规则与收费项目关系
     * @return 结果
     */
    int insertApartmentItemRuleRef(ApartmentItemRuleRef apartmentItemRuleRef);

    /**
     * 修改账单规则与收费项目关系
     *
     * @param apartmentItemRuleRef 账单规则与收费项目关系
     * @return 结果
     */
    int updateApartmentItemRuleRef(ApartmentItemRuleRef apartmentItemRuleRef);

    /**
     * 批量删除账单规则与收费项目关系
     *
     * @param refIds 需要删除的账单规则与收费项目关系主键集合
     * @return 结果
     */
     int deleteApartmentItemRuleRefByRefIds(Long[] refIds);

    /**
     * 删除账单规则与收费项目关系信息
     *
     * @param refId 账单规则与收费项目关系主键
     * @return 结果
     */
     int deleteApartmentItemRuleRefByRefId(Long refId);


    /**
     * 查询账单规则与收费项目关系列表
     *
     * @param ruleId 账单规则id
     * @return 账单规则与收费项目关系集合
     */
    List<ApartmentItemRuleRef> selectApartmentItemRuleRefByRuleId(Long ruleId);

    /**
     * 删除包含改id的关联关系
     * @param refIds id
     * @return 删除条数
     */
    int deleteApartmentItemRuleRefNotInRefIds(Long ruleId,List<Long> refIds);

    boolean checkItemNamesUnique(List<String> itemNames,Long ruleId);

    int insertApartmentItemRuleRefBatch(List<ApartmentItemRuleRef> refs);
    int insertApartmentItemRuleRefAndChargeItem(ApartmentItemRuleRef apartmentItemRuleRef);
}
